Il team di supporto didattico ha bisogno di un elenco di iscrizioni attive il cui rendimento recente è peggiorato. Confronta ciascuno studente con il proprio rendimento precedente nello stesso corso.
Concordare le regole
- Usa due periodi:
earliererecent. Ognuno ha due valutazioni di uguale peso. - Richiedi almeno due punteggi non NULL in ciascun periodo prima di confrontare le medie.
- Calcola
decline_points = earlier_avg - recent_avg. - Un calo di almeno 15 punti significa Review. Altrimenti un'iscrizione idonea ha Nessun avviso.
- Mantieni Dati insufficienti separati. Uno zero è un punteggio valido; un NULL o un record mancante non è uno zero.
Prepara il tuo database
Apri il file fornito lab8_setup.sql dalla cartella del TA DSAI2202/lab8/ in pgAdmin ed esegui il file completo. Usa di nuovo l'impostazione di connessione a destra ogni volta che apri una nuova connessione.
Il setup fornisce anche performance_comparison, una query salvata chiamata view. Servirà per gli esercizi successivi; non è una tabella aggiuntiva di risultati di valutazione memorizzati.
SET search_path TO lab8;SET search_path TO lab8;
SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;SET search_path TO lab8;
SELECT e.enrolment_id, e.student_id, e.course_code,
r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;Verifica i conteggi del setup
| Tabella | Righe | Una riga rappresenta |
|---|---|---|
| students | 18 | Il profilo di uno studente |
| courses | 4 | Un corso |
| enrolments | 24 | L'iscrizione di uno studente a un corso |
| assessment_results | 92 | Un risultato di valutazione per un'iscrizione e un periodo |
| support_units | 7 | Un'unitĂ di supporto nell'esercizio opzionale sulla gerarchia |
Ci sono 22 iscrizioni attive e 2 ritirate. L'indagine finale richiede una riga per ogni iscrizione attiva, non una riga per ogni valutazione o una riga per studente su tutti i corsi.
Cinque casi da analizzare
| Iscrizione | Corso | Punteggi precedenti | Punteggi recenti | Prove sufficienti? |
|---|---|---|---|---|
| E01 | SQL101 | 80, 90 | 60, 70 | Sì |
| E07 | SQL101 | 80, NULL | 50, 50 | No: un solo punteggio precedente |
| E08 | SQL101 | 80, 80 | NULL, NULL | No: nessun punteggio recente valutato |
| E09 | SQL101 | Nessuna riga | 60, 60 | No: periodo precedente mancante |
| E24 | STAT101 | 0, 0 | 0, 0 | Sì |
La query di ispezione restituisce 18 righe di valutazione. E09 ha solo due righe; le sue valutazioni precedenti sono assenti. E08 ha due righe recenti, ma nessuna delle due ha un punteggio registrato.
Verifica i due esempi idonei
E01: media precedente 85, media recente 65, calo 20 punti → Review. E24: entrambe le medie 0, calo 0 → Nessun avviso. Gli altri tre esempi richiedono l'etichetta Dati insufficienti.